perm filename FIX[AP,SYS]1 blob sn#000481 filedate 1972-10-20 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00004 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	PROGRAM TO ALLOW MANUAL CHANGING OF THE DATA IN A FILE.
 00003 00003	Main program.
 00004 00004	
 00006 ENDMK
⊗;
;PROGRAM TO ALLOW MANUAL CHANGING OF THE DATA IN A FILE.

	TITLE	FIX


EXTERNAL DDT,JOBDDT

FLAGS←←0
CHAR←4
FBPTR←5
CNT←6
A←7

DSK17:	17
	SIXBIT	/DSK/
	0

MAXLEN←10000		;maximum allowable size of file

FILEF:	BLOCK	4	;lookup/enter block for file

FILE:	BLOCK	MAXLEN	;array for holding entire file in core

CMD:	IOWD	1,FILE	;dump mode command for reading/writing the file
	0

CR←15

;flag bits in AC FLAGS

GOTEXT←1
MOD←2
;Main program.

RESET:	CLRBFI
	OUTSTR	[ASCIZ /
Oh yeah?
/]

FIX:	OUTSTR	[ASCIZ /

TYPE FILENAME: /]
	MOVEI	CNT,6		;limit filename to 6 chars
	SETZ	FLAGS,
	MOVE	FBPTR,[POINT 6,FILEF]
	SETZM	FILEF+1
	INCHWL	CHAR
	CAIN	CHAR,"."
	JRST	RESET
GETNAM:	TRZ	CHAR,40		;convert char to sixbit
	TRZE	CHAR,100
	TRO	CHAR,40
	SOJL	CNT,.+2
	IDPB	CHAR,FBPTR
	INCHWL	CHAR
	CAIN	CHAR,CR
	JRST	ENDNAM
	CAIE	CHAR,"."
	JRST	GETNAM
GETEXT:	TLNE	FLAGS,GOTEXT
	JRST	RESET
	MOVEI	CNT,3
	MOVE	FBPTR,[POINT 6,FILEF+1]
	TLO	FLAGS,GOTEXT
	INCHWL	CHAR
	JRST	GETNAM


ENDNAM:	CLRBFI
	OUTSTR	[ASCIZ /Modify the file? /]
	TLZ	FLAGS,MOD
	INCHRW	A
	CAIE	A,"Y"
	CAIN	A,"y"
	TLO	FLAGS,MOD
	OPEN	1,DSK17
	HALT	.
	SETZM	FILEF+3
	LOOKUP	1,FILEF
	JRST	RESET
	HLRE	A,FILEF+3
	CAMGE	A,[-MAXLEN]
	JRST	[RELEAS	1,
		 OUTSTR	[ASCIZ /
File is too big for FIX.
/]
		 CALL	[SIXBIT /EXIT/]]
	HRLM	A,CMD
	IN	1,CMD
	JRST	.+2
	HALT	.
	RELEAS	1,
	TLNN	FLAGS,MOD
	JRST	NOMOD
	OPEN	1,DSK17
	HALT	.
	HLLZS	FILEF+1
	SETZM	FILEF+2
	SETZM	FILEF+3
	ENTER	1,FILEF
	HALT	.
NOMOD:	OUTSTR	[ASCIZ /
File read in.
/]
	JRST	@JOBDDT
WRITE:
	TLNN	FLAGS,MOD
	JRST	[OUTSTR	[ASCIZ /
You said no modification!
/]
		 CALLI	1,12
		 JRST	FIX]
	OUT	1,CMD
	JRST	.+2
	HALT	.
	RELEAS	1,
	CALLI				;RESET
	OUTSTR	[ASCIZ /

New file written.
/]
	CALLI	12			;EXIT
	END	FIX